package placeresp

import (
	"yundian/internel/app/models/dividendslog"
	"yundian/internel/app/models/orders"
	"yundian/internel/app/models/placemodel"
	"yundian/internel/app/models/room"
	"yundian/internel/pkg/dingo"
)

// 商户列表
type PlaceInfoWithUser struct {
	placemodel.PlaceModel
	Name               string  `gorm:"column:name" json:"name"`
	Phone              string  `gorm:"column:phone" json:"phone"`
	PhoneCode          string  `gorm:"column:phone_code" json:"phoneCode"`
	DrawCount          int     `gorm:"column:draw_count" json:"drawCount"`
	DividMoney         float64 `gorm:"column:divid_money" json:"dividMoney"`
	CashMoney          int64   `gorm:"column:cash_money" json:"cashMoney"`
	CashCount          int     `gorm:"column:cash_count" json:"cashCount"`
	ProfitType         int     `gorm:"column:profit_type" json:"profitType"`
	ProfitProportion   int     `gorm:"column:profit_proportion" json:"profitProportion"`
	SmProfitProportion int     `gorm:"column:sm_profit_proportion" json:"smProfitProportion"`
	ParentID           int     `gorm:"column:parent_id" json:"parentId"`
	UserNo             string  `gorm:"column:user_no" json:"userNo"`
}

// 商户详情
type PlaceInfo struct {
	placemodel.PlaceModel
	Name               string `gorm:"column:name" json:"name"`
	Phone              string `gorm:"column:phone" json:"phone"`
	PhoneCode          string `gorm:"column:phone_code" json:"phoneCode"`
	ProfitType         int    `gorm:"column:profit_type" json:"profitType"`
	ProfitProportion   int    `gorm:"column:profit_proportion" json:"profitProportion"`
	SmProfitProportion int    `gorm:"column:sm_profit_proportion" json:"smProfitProportion"`

	// 设备条数
	PlaceDeviceCount []PlaceDeviceCount `gorm:"-" json:"placeDeviceCount"`
	// 分红数据
	DividendsList []dividendslog.DividendsLog `gorm:"-" json:"dividendsList"`
	// 订单数据
	OrderList  []orders.OrderModel `gorm:"-" json:"orderList"`
	OrderCount int64               `gorm:"-" json:"orderCount"`
	DividMoney string              `gorm:"-" json:"dividMoney"` // 累计收益
	CashMoney  string              `gorm:"-" json:"cashMoney"`  // 已提现金额
	Money      string              `gorm:"-" json:"money"`      // 用户余额（可提现金额）
}

// 商户销售额排行
type PlaceRankList struct {
	Id        int    `gorm:"primary_key;column:id" json:"id"`
	PlaceName string `gorm:"column:place_name" json:"placeName"` // 网点名

	DeviceCount int   `gorm:"column:device_count" json:"deviceCount"` // 拥有设备数
	Total       int64 `gorm:"column:total" json:"total"`
}

// 商户使用率排行
type PlaceUsedRateRankList struct {
	PlaceId     int    `gorm:"column:place_id" json:"placeId"`         // 网点ID
	PlaceName   string `gorm:"column:place_name" json:"placeName"`     // 网点名
	DeviceCount int    `gorm:"column:device_count" json:"deviceCount"` // 网点名

	OrderTotal  int     `gorm:"column:order_total"  json:"orderTotal"`   // 定单总数
	Turnover    int64   `gorm:"column:turnover"  json:"turnover"`        // 交易额
	TurnoverStr float32 `gorm:"column:turnover_str"  json:"turnoverStr"` // 交易额
	UsageRate   float32 `gorm:"column:usage_rate"  json:"usageRate"`     // 使用率
	Arpa        float32 `gorm:"column:arpa"  json:"arpa"`                // 客单价

	Level string `gorm:"column:level" json:"level"` // 商户评级
}

// 商户入场已达标列表
type PlaceInfoWithEntry struct {
	Id        int    `gorm:"primary_key;column:id" json:"id"`
	PlaceName string `gorm:"column:place_name" json:"placeName"` // 商户名称
	Status    int8   `gorm:"column:status" json:"status"`        // 状态

	Name   string `gorm:"column:name" json:"name"`
	Phone  string `gorm:"column:phone" json:"phone"`
	UserNo string `gorm:"column:user_no" json:"userNo"`

	AgentUserId int `gorm:"column:agent_user_id" json:"agentUserId"` // 代理商用户ID

	EntryMoney  int64      `gorm:"column:entry_money" json:"entryMoney"`   // 进场金额
	EntryAt     dingo.Time `gorm:"column:entry_at" json:"entryAt"`         // 进场时间
	EntryStatus int8       `gorm:"column:entry_status" json:"entryStatus"` // 状态
	Total       int64      `gorm:"column:total" json:"total"`
}

// 获取商户ID、酒店ID
type GetPlaceIdWithHotelId struct {
	Id        int    `gorm:"primary_key;column:id" json:"id"`
	PlaceName string `gorm:"column:place_name" json:"placeName"` // 网点名
	HotelId      string  `gorm:"column:hotel_id" json:"hotelId"`           //携程酒店ID
}

// 获取门店状态
type GetPlaceStatusRes struct {
	PlaceId   int                                  `gorm:"column:place_id" json:"placeId"`     // 门店 ID
	PlaceName string                               `gorm:"column:place_name" json:"placeName"` // 门店名称
	PlaceDesc string                               `gorm:"column:place_desc" json:"placeDesc"` // 门店名称
	Status    uint8                                `gorm:"column:status" json:"status"`        // 门店审核状态
	CreateAt  dingo.Time                           `gorm:"column:create_at" json:"createAt"`   // 门店创建时间
	RoomList  []*room.RoomListByPlaceId            `gorm:"-" json:"roomList"`                  // 房间号
	Logistics []*placemodel.PlaceLogisticsModel    `gorm:"-" json:"logistics"`                 // 物流信息
}

type PlaceIdAndUserId struct {
	PlaceId         int    `gorm:"column:place_id" json:"placeId"`
	UserId          int    `gorm:"column:user_id" json:"userId"`
	Date            string `gorm:"column:date" json:"date"`
	SettlementMoney int64  `gorm:"column:settlement_money" json:"settlementMoney"`
	CompleteCount   int64  `gorm:"column:complete_count" json:"completeCount"`
	CancelCount     int64  `gorm:"column:cancel_count" json:"cancelCount"`
	DlMoney         int64  `gorm:"column:dl_money" json:"dlMoney"`
	DlUserId        int    `gorm:"column:dl_user_id" json:"dlUserId"`
	Income          int64  `gorm:"column:income" json:"income"`
	TotalMoney      int64  `gorm:"column:total_money"json:"total_money"`
	TradeTotal      int64  `gorm:"column:trade_total" json:"tradeTotal"`            // 交易总额
	BrCompleteCount int64  `gorm:"column:br_complete_count" json:"brCompleteCount"` //分公司的完成订单量
	BrCancelCount   int64  `gorm:"column:br_cancel_count" json:"brCancelCount"`     // 分公司的撤销订单量
	DivindsMoney    int64  `gorm:"column:divinds_money" json:"divinds_money"`
}

type PlaceList struct {
	Id        int    `gorm:"primary_key;column:id" json:"id"`
	ClassName string `gorm:"column:class_name" json:"className"`
	PlaceName string `gorm:"column:place_name" json:"placeName"` // 商户名称
	PlaceDesc string `gorm:"column:place_desc" json:"placeDesc"` // 商户备注

	HotelId      string  `gorm:"column:hotel_id" json:"hotelId"`           //携程酒店ID
	DeviceCount  int     `gorm:"column:device_count" json:"deviceCount"`   // 拥有设备数
	Status       int8    `gorm:"column:status" json:"status"`              // 状态
	ProjectLabel string  `gorm:"project_label" json:"projectLabel"`        // 项目标识
	MaintainerId int     `gorm:"column:maintainer_id" json:"maintainerId"` // 维护者ID
	Level        string  `gorm:"column:level" json:"level"`                // 商户评级
	UsedRate     float32 `gorm:"column:used_rate" json:"usedRate"`         // 商户使用率

	IsDelete   uint8 `gorm:"column:is_delete" json:"-"`
	IsAd       int   `gorm:"is_ad" json:"isAd"`              //是否展示广告
	IsAdBanner int   `gorm:"is_ad_banner" json:"isAdBanner"` //是否展示广告
	IsBusiness int   `gorm:"is_business" json:"isBusiness"`  //
	IsSteward  int   `gorm:"is_steward" json:"isSteward"`    //

	// 用户信息
	UserID           int    `gorm:"column:user_id" json:"userId"` // 用户ID
	MscID            int    `gorm:"column:msc_id" json:"mscId"`   // 用户ID
	Name             string `gorm:"column:name" json:"name"`
	ProfitProportion int    `gorm:"column:profit_proportion" json:"profitProportion"`
	Phone            string `gorm:"column:phone" json:"phone"`

	ParentId       int    `gorm:"column:parent_id" json:"parentId"`
	ParentName     string `gorm:"column:parent_name" json:"parentName"`
	ParentUserName string `gorm:"column:parent_user_name" json:"parentUserName"`

	// 分公司信息
	BranchUserId   int    `gorm:"column:branch_user_id" json:"branchUserId"` // 分公司ID
	BranchName     string `gorm:"column:branch_name" json:"branchName"`
	BranchUserName string `gorm:"column:branch_user_name" json:"branchUserName"`

	// 商户进场模式
	EntryMoney  int        `gorm:"column:entry_money" json:"entryMoney"`   // 进场金额
	EntryAt     dingo.Time `gorm:"column:entry_at" json:"entryAt"`         // 进场时间
	EntryStatus int8       `gorm:"column:entry_status" json:"entryStatus"` // 状态

	// 省份、城市
	Province   string `gorm:"column:province" json:"province"` // 用户所在省份
	City       string `gorm:"column:city" json:"city"`         // 用户所在城市
	County     string `gorm:"column:county" json:"county"`     // 用户所在县
	Country    string `gorm:"column:country" json:"country"`   // 国家
	Address    string `gorm:"column:address" json:"address"`
	RegionCode string `gorm:"column:region_code" json:"regionCode"` //省市县 编号
	RegionIds  string `gorm:"column:region_ids" json:"regionIds"`   //省市县 编号
	ProvinceId int    `gorm:"column:province_id" json:"provinceId"` //省份ID
	CityId     int    `gorm:"column:city_id" json:"cityId"`         //城市ID
	CountyId   int    `gorm:"column:county_id" json:"countyId"`     //区、县ID
	AreaId     int    `gorm:"column:area_id" json:"areaId"`         //区域ID

	LastLoginIp   string     `gorm:"column:last_login_ip" json:"lastLoginIp"` // 最后登录IP
	LastLoginTime dingo.Time `gorm:"column:last_login_time" json:"lastLoginTime"`

	// 流水
	LastMonthSettlement int64 `gorm:"column:last_month_settlement" json:"lastMonthSettlement"`
	NowMonthSettlement  int64 `gorm:"column:now_month_settlement" json:"nowMonthSettlement"`

	ReceiveTime string `gorm:"column:receive_time" json:"receiveTime"` // 物流签收时间

	// 门店图片信息
	PlaceLicense string `gorm:"place_license" json:"placeLicense"` // 营业执照
	PlaceFace    string `gorm:"place_face" json:"placeFace"`       // 店面照片
	PlaceDesign  string `gorm:"place_design" json:"placeDesign"`   // 店面环境

	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"` // 创建时间
	UpdateAt dingo.Time `gorm:"column:update_at" json:"updateAt"` // 修改时间
	DeleteAt dingo.Time `gorm:"column:delete_at" json:"-"`

	IsOpenFirst int `gorm:"is_open_first" json:"isOpenFirst"` // 是否开启首单
}

type PlaceListByAll struct {
	Id        int    `gorm:"primary_key;column:id" json:"id"`
	ClassName string `gorm:"column:class_name" json:"className"`
	PlaceName string `gorm:"column:place_name" json:"placeName"` // 商户名称

	HotelId      string  `gorm:"column:hotel_id" json:"hotelId"`           //携程酒店ID
	DeviceCount  int     `gorm:"column:device_count" json:"deviceCount"`   // 拥有设备数
	Status       int8    `gorm:"column:status" json:"status"`              // 状态
	ProjectLabel string  `gorm:"project_label" json:"projectLabel"`        // 项目标识
	MaintainerId int     `gorm:"column:maintainer_id" json:"maintainerId"` // 维护者ID
	Level        string  `gorm:"column:level" json:"level"`                // 商户评级
	UsedRate     float32 `gorm:"column:used_rate" json:"usedRate"`         // 商户使用率

	IsDelete uint8 `gorm:"column:is_delete" json:"-"`
	IsAd     int   `gorm:"is_ad" json:"isAd"` //是否展示广告

	// 用户信息
	UserID           int    `gorm:"column:user_id" json:"userId"` // 用户ID
	Name             string `gorm:"column:name" json:"name"`
	ProfitProportion int    `gorm:"column:profit_proportion" json:"profitProportion"`
	Phone            string `gorm:"column:phone" json:"phone"`

	ParentId       int    `gorm:"column:parent_id" json:"parentId"`
	ParentName     string `gorm:"column:parent_name" json:"parentName"`
	ParentUserName string `gorm:"column:parent_user_name" json:"parentUserName"`

	// 分公司信息
	BranchUserId   int    `gorm:"column:branch_user_id" json:"branchUserId"` // 分公司ID
	BranchName     string `gorm:"column:branch_name" json:"branchName"`
	BranchUserName string `gorm:"column:branch_user_name" json:"branchUserName"`

	// 商户进场模式
	EntryMoney  int        `gorm:"column:entry_money" json:"entryMoney"`   // 进场金额
	EntryAt     dingo.Time `gorm:"column:entry_at" json:"entryAt"`         // 进场时间
	EntryStatus int8       `gorm:"column:entry_status" json:"entryStatus"` // 状态

	// 省份、城市
	Province   string `gorm:"column:province" json:"province"` // 用户所在省份
	City       string `gorm:"column:city" json:"city"`         // 用户所在城市
	County     string `gorm:"column:county" json:"county"`     // 用户所在县
	Country    string `gorm:"column:country" json:"country"`   // 国家
	Address    string `gorm:"column:address" json:"address"`
	RegionCode string `gorm:"column:region_code" json:"regionCode"` //省市县 编号
	RegionIds  string `gorm:"column:region_ids" json:"regionIds"`   //省市县 编号
	ProvinceId int    `gorm:"column:province_id" json:"provinceId"` //省份ID
	CityId     int    `gorm:"column:city_id" json:"cityId"`         //城市ID
	CountyId   int    `gorm:"column:county_id" json:"countyId"`     //区、县ID
	AreaId     int    `gorm:"column:area_id" json:"areaId"`         //区域ID

	LastLoginIp   string     `gorm:"column:last_login_ip" json:"lastLoginIp"` // 最后登录IP
	LastLoginTime dingo.Time `gorm:"column:last_login_time" json:"lastLoginTime"`

	// 流水
	LastMonthSettlement int64 `gorm:"column:last_month_settlement" json:"lastMonthSettlement"`
	NowMonthSettlement  int64 `gorm:"column:now_month_settlement" json:"nowMonthSettlement"`

	ReceiveTime string `gorm:"column:receive_time" json:"receiveTime"` // 物流签收时间

	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"` // 创建时间
	UpdateAt dingo.Time `gorm:"column:update_at" json:"updateAt"` // 修改时间
	DeleteAt dingo.Time `gorm:"column:delete_at" json:"-"`

	DrawStr string `gorm:"draw_str" json:"drawStr"`
	Range   int    `gorm:"range" json:"range"`
	Num     int    `gorm:"num" json:"num"`
}

type PlacesWithUser struct {
	placemodel.PlaceModel
	Name               string             `json:"name"` // 名称-姓名
	ParentId           int                `gorm:"column:parent_id" json:"parentId"`
	ParentName         string             `gorm:"column:parent_name" json:"parentName"`
	ProfitProportion   int                `gorm:"column:profit_proportion" json:"profitProportion"`
	SmProfitProportion int                `gorm:"column:sm_profit_proportion" json:"smProfitProportion"`
	Phone              string             `gorm:"column:phone" json:"phone"`
	Avatar             string             `gorm:"column:avatar" json:"avatar"`
	UserNo             string             `gorm:"column:user_no" json:"userNo"` // 用户编号（合伙人：HH+时间戳 代理：DL+时间戳 商户：SH+时间戳）
	KaUserName         string             `gorm:"column:ka_user_name" json:"kaUserName"`
	BranchUserName     string             `gorm:"column:branch_user_name" json:"branchUserName"`
	Income             string             `gorm:"-" json:"income"`
	DevCount           []PlaceDeviceCount `gorm:"-" json:"devCount"`

	DividendsMoney int64 `gorm:"-" json:"dividendsMoney"`
}

type PlaceDeviceCount struct {
	Total          int    `gorm:"column:total" json:"total"`
	PlaceId        int    `gorm:"column:place_id" json:"placeId"`            // 网点ID
	PlaceName      string `gorm:"column:place_name" json:"placeName"`        // 网点名称
	DeviceTypeId   int    `gorm:"column:device_type_id" json:"deviceTypeId"` // 设备类型ID
	DeviceTypeName string `gorm:"column:device_type_name" json:"deviceTypeName"`
	ProdType       int    `gorm:"column:prod_type" json:"prodType"`
}

type PlaceToDevice struct {
	PlaceId        int    `gorm:"column:place_id" json:"placeId"`              // 网点ID
	PlaceName      string `gorm:"column:place_name" json:"placeName"`          // 网点名称
	UserNo         string `gorm:"column:user_no" json:"userNo"`                // 商户编号
	MaintainerId   int    `gorm:"column:maintainer_id" json:"maintainerId"`    // 网点ID
	MaintainerName string `gorm:"column:maintainerName" json:"maintainerName"` // 维护者
}

type SmallPlacePloyWithUser struct {
	Id          int    `gorm:"primary_key;column:id" json:"id"`
	PlaceName   string `gorm:"column:place_name" json:"placeName"`     // 商户名称
	DeviceCount int    `gorm:"column:device_count" json:"deviceCount"` // 拥有设备数
	Province    string `gorm:"column:province" json:"province"`        // 用户所在省份
	City        string `gorm:"column:city" json:"city"`                // 用户所在城市

	Level    string     `gorm:"column:level" json:"level"`        // 商户评级
	UsedRate float32    `gorm:"column:used_rate" json:"usedRate"` // 商户使用率
	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"` // 创建时间

	ProjectLabel string `gorm:"project_label" json:"projectLabel"` // 项目标识
	DrawStr      string `gorm:"draw_str" json:"drawStr"`           // 项目标识

	Name     string             `json:"name"` // 名称-姓名
	Phone    string             `gorm:"column:phone" json:"phone"`
	DevCount []PlaceDeviceCount `gorm:"-" json:"devCount"`
}

type TotalPlaceDevices struct {
	PlaceCount  int `gorm:"column:place_count" json:"placeCount"`   // 网点数
	DeviceCount int `gorm:"column:device_count" json:"deviceCount"` // 设备数
}

type PlaceToEntry struct {
	Id        int    `gorm:"primary_key;column:id" json:"id"`
	PlaceName string `gorm:"column:place_name" json:"placeName"` // 网点名称

	// 商户进场模式
	EntryMoney  int64      `gorm:"column:entry_money" json:"entryMoney"`   // 进场金额
	EntryAt     dingo.Time `gorm:"column:entry_at" json:"entryAt"`         // 进场时间
	EntryStatus int8       `gorm:"column:entry_status" json:"entryStatus"` // 状态
}

type DeviceCountPlaceIdsModel struct {
	DeviceTotal int64 `gorm:"column:total" json:"total"`
	PlaceId     int   `gorm:"column:place_id" json:"placeId"`
}

type PlaceDividendsModel struct {
	PlaceMoney int64 `gorm:"column:place_money" json:"place_money"`
	PlaceId    int   `gorm:"column:place_id" json:"placeId"`
	UserId     int   `gorm:"column:user_id" json:"userId"`
}

type PlaceMoneyPlaceIdsModel struct {
	PlaceMoney int64 `gorm:"column:place_money" json:"place_money"`
	PlaceId    int   `gorm:"column:place_id" json:"placeId"`
}

type BranchIncomeStatistical struct {
	UserId        int    `gorm:"column:user_id" json:"userId"`
	Date          string `gorm:"column:date" json:"date"`
	CompleteCount int64  `gorm:"column:complete_count" json:"completeCount"`
	CancelCount   int64  `gorm:"column:cancel_count" json:"cancelCount"`
	TotalMoney    int64  `gorm:"column:total_money"json:"total_money"`
	TradeTotal    int64  `gorm:"column:trade_total" json:"tradeTotal"` // 交易总额
	DivindsMoney  int64  `gorm:"column:divinds_money" json:"divinds_money"`
}

type PlaceFirstOrderTime struct {
	PlaceId  int    `gorm:"column:place_id" json:"placeId"`
	FirsDate string `gorm:"column:firs_date" json:"firsDate"`
}

type PlaceIdReceiveTimeModel struct {
	ReceiveTime string `gorm:"column:receive_time" json:"receiveTime"`
	PlaceId     int    `gorm:"column:place_id" json:"placeId"`
}

type PlaceBulletin struct {
	PlaceId    int    `gorm:"column:id" json:"id"`
	Bulletin   string `gorm:"column:bulletin" json:"bulletin"`
	IsBulletin uint8  `gorm:"column:is_bulletin" json:"isBulletin"`
}


